package com.nuanshui.heatedloan.userinfo.facade;

import java.util.List;

import com.nuanshui.framework.exception.BizException;
import weixin.popular.bean.sns.SnsToken;
import com.nuanshui.heatedloan.userinfo.model.UserWeixinOpenId;
import com.nuanshui.heatedloan.userinfo.model.WechatUserInfo;


/**
 * 用户微信账号的相关处理
 * @author GH
 *
 */
public interface UserWeixinAccountService {

	/**
	 * 获取用户某种类型的openId
	 * @param @return
	 * @author guohao
	 * @date 2016年4月21日 下午4:43:48
	 * @since $
	 */
    String loadOpenIdBySource(int source)throws BizException;
	
	/**
	 *保存
	 * @param @param openId
	 * @param @return
	 * @author guohao
	 * @date 2016年4月21日 下午4:55:45
	 * @since $
	 */
    void insert(UserWeixinOpenId userWeixinOpenId)throws BizException;
	
	/**
	 * 判断openId是否存在
	 * @param @param openId
	 * @param @return
	 * @author guohao
	 * @date 2016年4月21日 下午7:44:47
	 * @since $
	 */
    boolean isExist(String openId)throws BizException;
	
	/**
	 * 根据openId获取一个账号
	 * @param @return
	 * @author guohao
	 * @date 2016年4月21日 下午7:45:19
	 * @since $
	 */
    UserWeixinOpenId loadByOpenId(String openId)throws BizException;
	
	/**
	 * 获取微信信息
	 * @return
	 */
    WechatUserInfo getWechatUserInfo(SnsToken snsToken)throws BizException;
	
	/**
	 * 依据用户id获得openid
	 * @param userId
	 * @return
	 */
    String getOpenIdByUserId(String userId)throws BizException;

	/**
	 * 依据用户id获得公众号相关openid
	 * @param userId
	 * @return
	 */
    List<UserWeixinOpenId> getOpenIdsByUserIds(String whereIn)throws BizException;
	
	/**
	 * 依据用户id <code>List</code>获得公众号相关openid
	 * @param ids
	 * @return
	 */
    List<UserWeixinOpenId> getOpenIdsByUserIds(List<String> ids)throws BizException;
}
